Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • View renderedDownload


lang/README.ru.md fee9e3356259c967b89373cf94deec01e6a5e6b3 (fee9e335) Text, 25.07 KB

Tc9d1d9# Reticulum MeshChatX

[Tff7b72English](Te6edf3../README.md) | [Tff7b72Deutsch](Te6edf3README.de.md) | [Tff7b72Italiano](Te6edf3README.it.md) | [Tff7b72中文](Te6edf3README.zh.md) | [Tff7b72日本語](Te6edf3README.ja.md)

Существенно доработанный и функционально расширенный форк Reticulum MeshChat от Liam Cottle.

Этот проект независим от оригинального Reticulum MeshChat и не связан с ним.

Tff7b72- Сайт: [Tff7b72meshchatx.com](Te6edf3https://meshchatx.com)
Tff7b72- Исходный код: [Tff7b72git.quad4.io/RNS-Things/MeshChatX](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX)
Tff7b72- Официальное зеркало на GitHub: [Tff7b72github.com/Quad4-Software/MeshChatX](Te6edf3https://github.com/Quad4-Software/MeshChatX)
Tff7b72- Релизы: [Tff7b72github.com/Quad4-Software/MeshChatX](Te6edf3https://github.com/Quad4-Software/MeshChatX)
Tff7b72- Журнал изменений: [Ta5d6ff`CHANGELOG.md`](../CHANGELOG.md)
Tff7b72- Поддержка проекта: [Ta5d6ff`donate.md`](../donate.md)

<a href="https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/Quad4-Software/MeshChatX"><img src="https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png" height="60" alt="Get it on Obtainium"></a>

rngit: Ta5d6ff`git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
NomadNet Node: Ta5d6ff`c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`

Tc9d1d9## Важные отличия от Reticulum MeshChat

Tff7b72- Для вызовов используется LXST
Tff7b72- Peewee ORM заменён на прямой SQL
Tff7b72- Axios заменён на нативный Ta5d6ff`fetch`
Tff7b72- Electron 41.x (встроенная среда Node 24)
Tff7b72- Колёса Ta5d6ff`.whl` с веб-сервером и встроенным фронтендом для разных сценариев развёртывания
Tff7b72- i18n
Tff7b72- PNPM и Poetry для зависимостей

Tff7b72> [!WARNING]
Tff7b72> MeshChatX не гарантирует совместимость данных со старыми версиями Reticulum MeshChat. Сделайте резервную копию перед миграцией или тестированием.

Tff7b72> [!WARNING]
Tff7b72> Устаревшие системы пока не поддерживаются. Текущий базис: Python `>=3.11` и Node `>=24` (Electron 41 выровнен с Node 24; поле `engines` в `package.json` и CI на той же линии).

Tc9d1d9## Требования

Tff7b72- Python Ta5d6ff`>=3.11` (из Ta5d6ff`pyproject.toml`)
Tff7b72- Node.js Ta5d6ff`>=24` (из Ta5d6ff`package.json`, поле Ta5d6ff`engines`)
Tff7b72- pnpm Ta5d6ff`10.33.0` (из Ta5d6ff`package.json`, поле Ta5d6ff`packageManager`)
Tff7b72- Poetry (используется в Ta5d6ff`Taskfile.yml` и CI)

**Browser Versions Required:**

Safari 16.4 или новее, Chrome 111 или новее, Firefox 128 или новее (встроенный веб-интерфейс).

Ta5d6ff```Ta5d6ffbash
task install
task lint:all
task test:all
task build:all
Ta5d6ff```

Tc9d1d9## Способы установки

Выберите способ в соответствии со средой и форматом пакета.

| Метод | Включает фронтенд | Архитектуры | Лучше всего для |
| --------------------- | ------------------- | ------------------------------------------------ | ------------------------------------- |
| Docker-образ | Да | Ta5d6ff`linux/amd64`, Ta5d6ff`linux/arm64` | Быстрый запуск на серверах Linux |
| Python wheel (Ta5d6ff`.whl`) | Да | Любая архитектура, поддерживаемая Python | Безголовый/веб-сервер без сборки Node |
| Linux AppImage | Да | Ta5d6ff`x64`, Ta5d6ff`arm64` | Портативное использование на ПК |
| Debian-пакет (Ta5d6ff`.deb`) | Да | Ta5d6ff`x64`, Ta5d6ff`arm64` | Установка на Debian/Ubuntu |
| RPM-пакет (Ta5d6ff`.rpm`) | Да | Зависит от раннера CI для публикуемого артефакта | Fedora/RHEL/openSUSE |
| Из исходников | Собирается локально | Архитектура хоста | Разработка и кастомные сборки |

Примечания:

Tff7b72- GitHub Actions собирает помеченные тегом релизы (Linux wheel/AppImage/deb/rpm, Windows, macOS, Flatpak, Android APK при теге на dev/master, SLSA, черновик релиза) в одном запуске: Ta5d6ff`.github/workflows/build-release.yml`; образ контейнера — Ta5d6ff`.github/workflows/docker.yml`. Android CI для веток и PR — Ta5d6ff`.github/workflows/android-build.yml`.
Tff7b72- AppImage + DEB для Linux Ta5d6ff`x64` и Ta5d6ff`arm64` собираются на GitHub; RPM собирается по возможности и выкладывается, если шаг дал артефакт.

Tc9d1d9## Docker

Tff7b72- **Docker Hub:** Ta5d6ff`quad4io/meshchatx`
Tff7b72- **GHCR:** Ta5d6ff`ghcr.io/quad4-software/meshchatx`

Ta5d6ff```Ta5d6ffbash
docker compose up -d
Ta5d6ff```

Ta5d6ff```Ta5d6ffbash
docker run -d --name reticulum-meshchatx Tffea00\
--restart unless-stopped Tffea00\
--security-opt no-new-privileges:true Tffea00\
-p T79c0ff127.0.0.1:8000:8000 Tffea00\
-v meshchatx-config:/config Tffea00\
ghcr.io/quad4-software/meshchatx:latest
Ta5d6ff```

Вместо образа GHCR можно указать Ta5d6ff`quad4io/meshchatx:latest`, если предпочитаете Docker Hub.

Compose-файл по умолчанию:

Tff7b72- Ta5d6ff`127.0.0.1:8000` на хосте -> порт Ta5d6ff`8000` контейнера
Tff7b72- Именованный том Docker **`meshchatx-config`** -> **`/config`** для данных (подходит пользователю **meshchat** в образе, UID 1000, без Ta5d6ff`chown` на хосте для bind mount)

**По желанию: каталог на хосте**

Замените строку тома на Ta5d6ff`-v "$(pwd)/meshchat-config:/config"` (Compose: измените Ta5d6ff`volumes` у сервиса). Контейнер работает от **UID 1000**; каталог на хосте должен быть доступен на запись (обычно: Ta5d6ff`sudo chown -R 1000:1000 ./meshchat-config`). Создайте пустой каталог до первого запуска, чтобы Docker не создал его с неподходящими правами.

**Просмотр или удаление именованного тома**

Ta5d6ff```Ta5d6ffbash
docker volume inspect meshchatx-config
docker rm -f reticulum-meshchatx
docker volume rm meshchatx-config
Ta5d6ff```

Tc9d1d9## Установка из релизных артефактов

Tc9d1d9### 1) Linux AppImage (x64/arm64)

Tff7b721. Скачайте Ta5d6ff`ReticulumMeshChatX-v<версия>-linux-<арх>.AppImage` из релизов.
Tff7b722. Сделайте исполняемым и запустите:

Ta5d6ff```Ta5d6ffbash
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
Ta5d6ff```

Tc9d1d9### 2) Debian/Ubuntu `.deb` (x64/arm64)

Tff7b721. Скачайте Ta5d6ff`ReticulumMeshChatX-v<версия>-linux-<арх>.deb`.
Tff7b722. Установите:

Ta5d6ff```Ta5d6ffbash
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
Ta5d6ff```

Tc9d1d9### 3) RPM-системы

Tff7b721. Скачайте Ta5d6ff`ReticulumMeshChatX-v<версия>-linux-<арх>.rpm`, если есть в релизе.
Tff7b722. Установите:

Ta5d6ff```Ta5d6ffbash
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
Ta5d6ff```

Tc9d1d9### 4) Python wheel (`.whl`)

В релизных wheel включены собранные веб-ресурсы.

Ta5d6ff```Ta5d6ffbash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
Ta5d6ff```

Ta5d6ff`pipx` также поддерживается:

Ta5d6ff```Ta5d6ffbash
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
Ta5d6ff```

Tc9d1d9## Запуск из исходников (режим веб-сервера)

Для разработки или локальной сборки.

Ta5d6ff```Ta5d6ffbash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile
pip install Ta5d6ff"poetry==2.3.4"
poetry check --lock
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1
Ta5d6ff```

Пояснения к командам установки:

Tff7b72- Ta5d6ff`pnpm install --frozen-lockfile` запрещает обновление Ta5d6ff`pnpm-lock.yaml` и завершится с ошибкой, если lock-файл не соответствует Ta5d6ff`package.json`. Это исключает скрытую установку неожиданной upstream-версии.
Tff7b72- Ta5d6ff`verify-store-integrity=true` уже задан в Ta5d6ff`.npmrc` проекта; явный Ta5d6ff`pnpm config set` дополнительно ужесточает пользовательскую конфигурацию.
Tff7b72- Lifecycle-скрипты (Ta5d6ff`preinstall`/Ta5d6ff`postinstall`) по умолчанию заблокированы в pnpm v10+. Скрипты установки могут запускать только пакеты из Ta5d6ff`pnpm.onlyBuiltDependencies` в Ta5d6ff`package.json` (сейчас Ta5d6ff`electron`, Ta5d6ff`electron-winstaller`, Ta5d6ff`esbuild`).
Tff7b72- Ta5d6ff`poetry check --lock` сразу падает, если Ta5d6ff`poetry.lock` не синхронизирован с Ta5d6ff`pyproject.toml`; затем Ta5d6ff`poetry install` ставит зависимости только из lock-файла.
Tff7b72- Для строгой установки Poetry только из lock-файла зафиксируйте версию Poetry через Ta5d6ff`pip install "poetry==2.3.4"`, как это делает CI.

Если вы намеренно хотите обновить зависимости, выполните Ta5d6ff`pnpm update` / Ta5d6ff`poetry update` отдельным коммитом и проверьте diff lock-файлов до пуша.

Tc9d1d9## Запуск в песочнице (Linux)

Чтобы запускать нативный Ta5d6ff`meshchatx` (псевдоним: Ta5d6ff`meshchat`) с дополнительной изоляцией файловой системы, можно использовать **Firejail** или **Bubblewrap** (Ta5d6ff`bwrap`), сохраняя обычный сетевой доступ для Reticulum и веб-интерфейса. Полные примеры (pip/pipx, Poetry, USB-serial) в:

Tff7b72- [Ta5d6ff`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)

Та же страница отображается в списке **Документация** (документация MeshChatX) в приложении, если файлы отдаются из встроенных или синхронизированных Ta5d6ff`meshchatx-docs`.

Tc9d1d9## Linux на ПК: шрифты эмодзи

Выбор эмодзи отображает стандартные Unicode-эмодзи системными шрифтами (Electron/Chromium). Если вместо них пустые квадраты («тофу»), установите пакет цветных эмодзи и перезапустите приложение.

| Семейство (примеры) | Пакет |
| -------------------------- | -------------------------------------------------------------------- |
| Arch Linux, Artix, Manjaro | Ta5d6ff`noto-fonts-emoji` (Ta5d6ff`sudo pacman -S noto-fonts-emoji`) |
| Debian, Ubuntu | Ta5d6ff`fonts-noto-color-emoji` (Ta5d6ff`sudo apt install fonts-noto-color-emoji`) |
| Fedora | Ta5d6ff`google-noto-emoji-color-fonts` |

После установки при необходимости выполните Ta5d6ff`fc-cache -fv`. Опционально: Ta5d6ff`noto-fonts` для лучшего покрытия символов на минимальных установках.

Tc9d1d9## Сборка настольных пакетов из исходников

Скрипты заданы в Ta5d6ff`package.json` и Ta5d6ff`Taskfile.yml`.

Tc9d1d9### Linux x64 AppImage + DEB

Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-x64
Ta5d6ff```

Tc9d1d9### Linux arm64 AppImage + DEB

Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-arm64
Ta5d6ff```

Tc9d1d9### RPM

Ta5d6ff```Ta5d6ffbash
pnpm run dist:rpm
Ta5d6ff```

Через Task:

Ta5d6ff```Ta5d6ffbash
task dist:fe:rpm
Ta5d6ff```

Tc9d1d9## Сборка в контейнере (wheel, AppImage, deb, rpm)

Ta5d6ff`Dockerfile.build` выполняет те же шаги, что и CI (Poetry, pnpm, Ta5d6ff`task`, пакетные зависимости APT). Ориентирован на **linux/amd64** (NodeSource amd64, Task amd64). Цель по умолчанию: всё; её можно переопределить build-arg.

Для Ta5d6ff`MESHCHATX_BUILD_TARGETS` доступны: Ta5d6ff`all` (по умолчанию), Ta5d6ff`wheel` или Ta5d6ff`electron` (AppImage + deb для x64 и arm64, RPM по возможности, без wheel).

Сборка:

Ta5d6ff```Ta5d6ffbash
docker build -f Dockerfile.build -t meshchatx-build:local .
Ta5d6ff```

Только wheel:

Ta5d6ff```Ta5d6ffbash
docker build -f Dockerfile.build --build-arg Te6edf3MESHCHATX_BUILD_TARGETSTff7b72=wheel -t meshchatx-build:wheel .
Ta5d6ff```

Скопируйте Ta5d6ff`/artifacts` из готового образа на хост:

Ta5d6ff```Ta5d6ffbash
Te6edf3cidTff7b72=Tff7b72$(docker create meshchatx-build:localTff7b72)
docker cp Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff:/artifactsTa5d6ff" ./meshchatx-artifacts
docker rm Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff"
Ta5d6ff```

Tc9d1d9## Поддержка архитектур

Tff7b72- Образ Docker: Ta5d6ff`amd64`, Ta5d6ff`arm64`
Tff7b72- Linux AppImage: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Linux DEB: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Windows: Ta5d6ff`x64`, Ta5d6ff`arm64` (скрипты сборки есть)
Tff7b72- macOS: скрипты сборки (Ta5d6ff`arm64`, Ta5d6ff`universal`) для локальных сред
Tff7b72- Android: только universal APK (см. [Ta5d6ff`android/README.md`](../android/README.md))

Tc9d1d9## Android

MeshChatX поддерживает нативные Android APK (не только Termux).

Tc9d1d9### Сборка APK из исходников

Из корня репозитория:

Ta5d6ff```Ta5d6ffbash
T8b949e# 1) Собрать колёса Chaquopy для android/app/build.gradle
bash scripts/build-android-wheels-local.sh

T8b949e# 2) Собрать universal APK (один debug + один release за прогон; см. android/README.md)
Tffa657cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease
Ta5d6ff```

**Один** вариант Android. Gradle синхронизирует весь каталог Ta5d6ff`meshchatx/` в Ta5d6ff`app/src/main/python/meshchatx/`, включая офлайн-колёса репозитория. Документированные и публикуемые сборки используют только **universal**: за один прогон один debug APK и один release APK, каждый со всеми нативными ABI из Ta5d6ff`android/app/build.gradle`.

Tff7b72- Debug: Ta5d6ff`android/app/build/outputs/apk/debug/app-debug.apk`
Tff7b72- Release: Ta5d6ff`android/app/build/outputs/apk/release/app-release-unsigned.apk`

Примечания:

Tff7b72- Релизы по умолчанию не подписаны, пока не настроена подпись (Ta5d6ff`scripts/sign-android-apks.sh`).
Tff7b72- Нативные ABI внутри universal APK задаются в Ta5d6ff`android/app/build.gradle` (в т.ч. Ta5d6ff`armeabi-v7a`, если включён). Сборка колёс для Ta5d6ff`armeabi-v7a` требует Android SDK в Ta5d6ff`ANDROID_HOME` (см. Ta5d6ff`android/README.md`).
Tff7b72- Если в корне репо есть Ta5d6ff`dist/reticulum_meshchatx-*.whl` (например из Ta5d6ff`python -m build --wheel -o dist .`), обновление встроенного репозитория предпочитает эту wheel пакету MeshChatX с PyPI. В CI wheel собирается до шага Android Gradle.

Дополнительная документация:

Tff7b72- [Ta5d6ff`docs/meshchatx_on_android_with_termux.md`](../docs/meshchatx_on_android_with_termux.md)
Tff7b72- [Ta5d6ff`android/README.md`](../android/README.md)

Tc9d1d9## Конфигурация

| Аргумент | Переменная окружения | По умолчанию | Описание |
| -------------------------- | ---------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ta5d6ff`--host` | Ta5d6ff`MESHCHAT_HOST` | Ta5d6ff`127.0.0.1` | Адрес привязки веб-сервера |
| Ta5d6ff`--port` | Ta5d6ff`MESHCHAT_PORT` | Ta5d6ff`8000` | Порт веб-сервера |
| Ta5d6ff`--no-https` | Ta5d6ff`MESHCHAT_NO_HTTPS` | Ta5d6ff`false` | Отключить HTTPS |
| Ta5d6ff`--ssl-cert` / Ta5d6ff`--ssl-key` | Ta5d6ff`MESHCHAT_SSL_CERT` / Ta5d6ff`MESHCHAT_SSL_KEY` | (нет) | Пути к PEM-сертификату и ключу; задаются вместе. Переопределяют автосгенерированные сертификаты в каталоге Ta5d6ff`ssl/` у идентичности. |
| Ta5d6ff`--rns-log-level` | Ta5d6ff`MESHCHAT_RNS_LOG_LEVEL` | (нет) | Уровень лога стека Reticulum (RNS): Ta5d6ff`none`, Ta5d6ff`critical`, Ta5d6ff`error`, Ta5d6ff`warning`, Ta5d6ff`notice`, Ta5d6ff`verbose`, Ta5d6ff`debug`, Ta5d6ff`extreme` или число. CLI перекрывает переменную окружения, если заданы оба. |
| Ta5d6ff`--headless` | Ta5d6ff`MESHCHAT_HEADLESS` | Ta5d6ff`false` | Не открывать браузер автоматически |
| Ta5d6ff`--auth` | Ta5d6ff`MESHCHAT_AUTH` | Ta5d6ff`false` | Базовая аутентификация |
| Ta5d6ff`--reset-password` | Ta5d6ff`MESHCHAT_RESET_PASSWORD` | Ta5d6ff`false` | Сбросить сохраненный хэш пароля, чтобы задать новый через веб-интерфейс |
| Ta5d6ff`--storage-dir` | Ta5d6ff`MESHCHAT_STORAGE_DIR` | Ta5d6ff`./storage` | Каталог данных |
| Ta5d6ff`--public-dir` | Ta5d6ff`MESHCHAT_PUBLIC_DIR` | авто/bundled | Каталог фронтенда (для установок без встроенных ресурсов) |

Tc9d1d9## Ветки

| Ветка | Назначение |
| -------- | ------------------------------------------------------------------ |
| Ta5d6ff`master` | Стабильные релизы. Только код для продакшена. |
| Ta5d6ff`dev` | Активная разработка. Возможны нестабильные или неполные изменения. |

Tc9d1d9## Разработка

Типичные задачи из Ta5d6ff`Taskfile.yml`:

Ta5d6ff```Ta5d6ffbash
task install
task lint:all
task test:all
task build:all
Ta5d6ff```

Сокращения Ta5d6ff`Makefile`:

| Команда | Описание |
| -------------- | --------------------------------------- |
| Ta5d6ff`make install` | Установить зависимости pnpm и poetry |
| Ta5d6ff`make run` | Запуск MeshChatX через poetry |
| Ta5d6ff`make build` | Сборка фронтенда |
| Ta5d6ff`make lint` | eslint и ruff |
| Ta5d6ff`make test` | Тесты фронтенда и бэкенда |
| Ta5d6ff`make clean` | Удалить артефакты сборки и node_modules |

Tc9d1d9## Версионирование

Текущая версия в репозитории: Ta5d6ff`4.6.2`.

Tff7b72- Редактируйте для релизного бампа **только** поле Ta5d6ff`version` в **`package.json`**.
Tff7b72- Команда **`pnpm run version:sync`** (также в начале **`pnpm run build`**) распространяет эту версию в **`pyproject.toml`**, **`meshchatx/src/version.py`**, **`THIRD_PARTY_NOTICES.txt`** (строка продукта), **README** / **lang/README.\*** (строки «текущая версия»), **`docs/meshchatx_on_raspberry_pi.md`** (пример pipx) и вспомогательные поля **`packaging/arch/PKGBUILD`**.
Tff7b72- **`meshchatx.__version__`** читается из **`meshchatx/src/version.py`** без импорта **`meshchatx.src`**, поэтому обычный Ta5d6ff`import meshchatx` остаётся лёгким.
Tff7b72- Записи **changelog** по-прежнему вносятся вручную при релизе.

Tc9d1d9## Безопасность

Tff7b72- [Ta5d6ff`SECURITY.md`](../SECURITY.md)
Tff7b72- [Ta5d6ff`LEGAL.md`](../LEGAL.md)
Tff7b72- Встроенные проверки целостности и значения по умолчанию HTTPS/WSS в рантайме приложения.
Tff7b72- Сборка CI и релизы на GitHub Actions.

Tc9d1d9## Добавление языка

Авторский рабочий процесс: ArgosTranslate, затем локальная LLM (Qwen 3 + Gemma 4).

Затем правки и улучшения от сообщества приветствуются через LXMF или любой доступный канал.

Обнаружение локали автоматическое. Добавьте файл в Ta5d6ff`meshchatx/src/frontend/locales/` (например Ta5d6ff`xx.json`) с теми же ключами, что в Ta5d6ff`en.json`, и строку верхнего уровня Ta5d6ff`_languageName` для подписи в селекторе. Можно скопировать Ta5d6ff`en.json` и перевести вручную; **машинная генерация (в т. ч. Argos) необязательна** и никогда не требуется.

**По желанию: старт с Argos Translate:** для чернового перевода из Ta5d6ff`en.json` можно вызвать Ta5d6ff`scripts/argos_translate.py` (форматирование, цветной вывод, защита плейсхолдеров вроде Ta5d6ff`{count}`).

Ta5d6ff```Ta5d6ffbash
T8b949e# Установите argostranslate при необходимости
pipx install argostranslate

T8b949e# Запустите скрипт перевода
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name Ta5d6ff"Название языка"
Ta5d6ff```

После любой машинной прогонки пусть LLM или человек проверяет грамматику, контекст и тон (например формальный/неформальный стиль).

Ta5d6ff`pnpm test -- tests/frontend/i18n.test.js --run`: проверка равенства ключей с Ta5d6ff`en.json`.

Никаких других изменений в коде не требуется. Приложение, селектор языка и тесты обнаруживают локали из каталога Ta5d6ff`meshchatx/src/frontend/locales/` во время сборки.

Tc9d1d9## Поддержка проекта

Пожертвования добровольны. Они помогают оплатить время и усилия на разработку этого приложения.

**Как поддержать:** [Ta5d6ff`donate.md`](../donate.md) (Monero, Ko-Fi, Buy Me a Coffee).

Tc9d1d9## Авторы

Tff7b72- [Tff7b72Liam Cottle](Te6edf3https://github.com/liamcottle) - оригинальный Reticulum MeshChat
Tff7b72- [Tff7b72RFnexus](Te6edf3https://github.com/RFnexus) - парсер micron (JavaScript)
Tff7b72- [Tff7b72markqvist](Te6edf3https://github.com/markqvist) - Reticulum, LXMF, LXST

Tc9d1d9## Лицензия

Собственные части проекта лицензированы по 0BSD.
Оригинальные upstream-части из Reticulum MeshChat остаются под MIT.
Полный текст и уведомления см. в [Ta5d6ff`../LICENSE`](../LICENSE).


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────